// #region [库存]
/**
 * 提取商品库存状态，兼容多市场多语言（DEU/JPN/MEX/SAU等）
 * @param doc 浏览器DOM Document对象
 * @param marketplace 市场标识符（如 DEU、JPN、MEX、SAU）
 * @returns 库存数量（0=无货，30=默认有货，具体数字=实际剩余库存）
 */
export function extractProductStock(doc: Document, marketplace?: string): number {
  // 方法3: 检查是否包含"Currently unavailable."文本（优先级高）
  const unavailableSpan = Array.from(doc.querySelectorAll("span")).find((el) =>
    /currently unavailable/i.test(el.textContent?.trim() || "")
  );
  if (unavailableSpan) {
    return 0; // ❌ 无货
  }

  // 方法2: 查找availability区域，按市场语言匹配库存
  const availabilityElement = doc.getElementById("availability");
  if (availabilityElement) {
    const rawText = availabilityElement.textContent?.trim() || "";

    // 英文市场（USA、GBR、CAN等，非指定小语种市场）
    if (!["DEU", "JPN", "MEX", "SAU","FRA"].includes(marketplace || "")) {
      if (/in stock|available/i.test(rawText)) {
        const match = rawText.match(/only\s+(\d+)/i);
        return match ? parseInt(match[1], 10) : 30; // 有货：具体数字或默认30
      } else if (/out of stock|back order/i.test(rawText)) {
        return 0; // ❌ 无货
      }
    }

    // 德语市场（DEU）
    else if (marketplace === "DEU") {
      const countMatch = rawText.match(/nur\s+noch\s+(\d+)\s+auf\s+lager/i);
      if (countMatch) {
        return parseInt(countMatch[1], 10); // 提取具体剩余库存
      } else if (/auf\s+lager/i.test(rawText)) {
        return 30; // 有货
      } else if (/nicht (?:verfügbar|mehr.*auf\s+lager)/i.test(rawText)) {
        return 0; // ❌ 无货
      }
    }

    // 日语市场（JPN）
    else if (marketplace === "JPN") {
      const countMatch = rawText.match(/残り\s*(\d+)\s*点/i);
      if (countMatch) {
        return parseInt(countMatch[1], 10); // 提取具体剩余库存
      } else if (/在庫あり|通常\d+～\d+営業日で出荷/i.test(rawText)) {
        return 30; // 有货
      } else if (/在庫切れ|入荷予定/i.test(rawText)) {
        return 0; // ❌ 无货
      }
    }

    // 西班牙语市场（MEX）
    else if (marketplace === "MEX") {
      // 墨西哥库存数量匹配模式（按优先级排序）
      const mexPatterns = [
        /(?:[Ss]ólo|[Ss]olo)\s+queda\(n\)\s+(\d+)\s+en stock/,
        /(?:queda\(n\)|quedan?)\s+(\d+)\s+en stock/,
        /(?:[Ss]ólo|[Ss]olo)\s+(\d+)\s+en stock/,
        /(\d+)\s+en stock/,
      ];

      // 遍历模式匹配具体库存
      let countMatch: RegExpMatchArray | null = null;
      for (const pattern of mexPatterns) {
        countMatch = rawText.match(pattern);
        if (countMatch) break;
      }
      if (countMatch) {
        return parseInt(countMatch[1], 10); // 提取具体剩余库存
      }

      // 匹配有货/无货状态
      if (/disponible/i.test(rawText)) {
        return 30; // 有货
      } else if (/no disponible|agotado|sin stock/i.test(rawText)) {
        return 0; // ❌ 无货
      }

      return 30; // 兜底：默认有货
    }

    // 阿拉伯语市场（SAU）
    else if (marketplace === "SAU") {
      const countMatch = rawText.match(/تبقى\s+(\d+)\s+فقط/i);
      if (countMatch) {
        console.info(`提取到库存数量: ${countMatch[1]}`);
        return parseInt(countMatch[1], 10); // 提取具体剩余库存
      }

      if (/غير متوفر حالياً|المنتج غير متاح/i.test(rawText)) {
        return 0; // ❌ 无货
      }
      if (/متوفر/i.test(rawText)) {
        return 30; // 有货
      }
    }

    else if (marketplace === "FRA") {
      const countMatch = rawText.match(/Il\s+ne\s+reste\s+plus\s+que\s+(\d+)\s+exemplaire\(s\)\s+en\s+stock/i);
      if (countMatch) {
        return parseInt(countMatch[1], 10); // 提取具体剩余库存
      }

      if (/Temporairement en rupture de stock/i.test(rawText)) {
        return 0; // ❌ 无货
      }
      if (/Actuellement indisponible/i.test(rawText)) {
        return 0; // ❌ 无货
      }
      if (/En stock/i.test(rawText)) {
        return 30; // 有货
      }
    }
  }

  // 方法1: 检查"加入购物车"或"立即购买"按钮是否存在（兜底有货判断）
  const addToCartBtn = doc.querySelector('input[name="submit.addToCart"]');
  const buyNowBtn = doc.querySelector('input[name="submit.buy-now"]');
  if (addToCartBtn || buyNowBtn) {
    return 30; // ✅ 可购买即默认有货
  }

  // 方法4: 检查价格是否存在（辅助判断：无价格通常无货）
  const priceElement =
    doc.getElementById("priceblock_ourprice") ||
    doc.getElementById("priceblock_dealprice");
  if (!priceElement) {
    return 0; // ❌ 无价格=无货
  }

  // 默认兜底：认为有货（返回安全库存值30）
  return 30;
}
// #endregion
